約 3,928,801 件
https://w.atwiki.jp/marvelheroes/pages/68.html
Prologue Avengers Tower Prologue Raft Landing Pad Cell Block Alpha S.H.I.E.L.D. Checkpoint Chapter 1 Avengers Tower S.H.I.E.L.D. Training Room S.H.I.E.L.D. Rooftop Checkpoint Abandoned Subway Blood Rose Entrance Chapter 2 Avengers Tower SHIPPING YARD (旧 Storage Yard) HIDDEN A.I.M. LABORATRY CRAB TRAP RESTAURANT (旧 Crab Shack) Taskmaster Institute CANNERY ROW CARGO BARGE (旧 Cargo Freighter) Chapter 3 Avengers Tower Buccaneer Beach Bamboo Forest Lowtown S.H.I.E.L.D. Recon Post Hand Tower Chapter 4 Avengers Tower Lower East Side Crosstown Subway Upper East side Fisk Tower Chapter 5 Xavier's School Wretched Slum Purifier Advance Base Ruined projects Morlock underground Old Trainyard Chapter 6 Xavier's School Hidden Camp Training Ground Outer Compound Command Bunker Chapter 7 Xavier's School Dinosaur Jungle Shield Science Station Mutant marsh Chapter 8 Shield Helicarrier AIM Weapon Facility Hydra Island Doomstatd outer Village Occupied Doomstadt
https://w.atwiki.jp/wnt0/pages/43.html
http //www.dofactory.com/Patterns/PatternInterpreter.aspx のC#コードをC++にした Structural example #include iostream #include vector using namespace std; // The Context class class Context { }; // The AbstractExpression abstract class class AbstractExpression { public virtual void Interpret(Context *context) = 0; }; // The TerminalExpression class class TerminalExpression public AbstractExpression { public virtual void Interpret(Context *context) { cout "Called Terminal.Interpret()" endl; } }; // The NonterminalExpression class class NonterminalExpression public AbstractExpression { public virtual void Interpret(Context *context) { cout "Called Nonterminal.Interpret()" endl; } }; // Entry point into console application. int main() { Context *context = new Context; // Usually a tree vector AbstractExpression* list; // Populate abstract syntax tree list.push_back(new TerminalExpression); list.push_back(new NonterminalExpression); list.push_back(new TerminalExpression); list.push_back(new TerminalExpression); vector AbstractExpression* iterator it; // Interpret it = list.begin(); while (it != list.end()) { (*it)- Interpret(context); ++it; } // end it = list.begin(); while (it != list.end()) { delete *it; ++it; } return 0; } Real World example #include iostream #include string #include list using namespace std; // The Context class class Context { private string _input; int _output; public // Constructor Context(const string input) { _input = input; _output = 0; } // Gets or sets input string getInput() { return _input; } void setInput(const string value) { _input = value; } // Gets or sets output int getOutput() { return _output; } void setOutput(int value) { _output = value; } }; // The AbstractExpression class class Expression { public void Interpret(Context *context) { if (context- getInput().length() == 0) { return; } if (context- getInput().compare(0, Nine().length(), Nine()) == 0) { context- setOutput(context- getOutput() + (9 * Multiplier())); context- setInput(context- getInput().substr(2)); } else if (context- getInput().compare(0, Four().length(), Four()) == 0) { context- setOutput(context- getOutput() + (4 * Multiplier())); context- setInput(context- getInput().substr(2)); } else if (context- getInput().compare(0, Five().length(), Five()) == 0) { context- setOutput(context- getOutput() + (5 * Multiplier())); context- setInput(context- getInput().substr(1)); } while (context- getInput().compare(0, One().length(), One()) == 0) { context- setOutput(context- getOutput() + (1 * Multiplier())); context- setInput(context- getInput().substr(1)); } } virtual string One() = 0; virtual string Four() = 0; virtual string Five() = 0; virtual string Nine() = 0; virtual int Multiplier() = 0;// multiplier 掛ける、増える }; // A TerminalExpression class // Thousand checks for the Roman Numeral M class ThousandExpression public Expression { public virtual string One() { return "M"; } virtual string Four() { return " "; } virtual string Five() { return " "; } virtual string Nine() { return " "; } virtual int Multiplier() { return 1000; } }; // A TerminalExpression class // Hundred checks C, CD, D or CM class HundredExpression public Expression { public virtual string One() { return "C"; } virtual string Four() { return "CD"; } virtual string Five() { return "D"; } virtual string Nine() { return "CM"; } virtual int Multiplier() { return 100; } }; // A TerminalExpression class // Ten checks for X, XL, L and XC class TenExpression public Expression { public virtual string One() { return "X"; } virtual string Four() { return "XL"; } virtual string Five() { return "L"; } virtual string Nine() { return "XC"; } virtual int Multiplier() { return 10; } }; // A TerminalExpression class // One checks for I, II, III, IV, V, VI,VII, VIII, IX class OneExpression public Expression { public virtual string One() { return "I"; } virtual string Four() { return "IV"; } virtual string Five() { return "V"; } virtual string Nine() { return "IX"; } virtual int Multiplier() { return 1; } }; // Entry point into console application. int main() { string roman = "MCMXXVIII"; Context *context = new Context(roman); // Build the parse tree list Expression* tree; tree.push_back(new ThousandExpression); tree.push_back(new HundredExpression); tree.push_back(new TenExpression); tree.push_back(new OneExpression); list Expression* iterator it; // Interpret it = tree.begin(); while (it != tree.end()) { (*it)- Interpret(context); ++it; } cout roman " = " context- getOutput() endl; // end it = tree.begin(); while (it != tree.end()) { delete *it; ++it; } return 0; } 参考サイト デザインパターンを“喩え話”で分かり易く理解する http //www.netlaputa.ne.jp/~hijk/study/oo/designpattern.html TECHSCORE http //www.techscore.com/tech/DesignPattern/index.html/ Programing Place http //www.geocities.jp/ky_webid/index_old.html デザインパターンの骸骨たち http //www002.upp.so-net.ne.jp/ys_oota/mdp/ デザインパターンの使い方 Interpreter http //japan.internet.com/developer/20081205/26.html
https://w.atwiki.jp/stereo/pages/7.html
動画(youtube) @wikiのwikiモードでは #video(動画のURL) と入力することで、動画を貼り付けることが出来ます。 詳しくはこちらをご覧ください。 =>http //www1.atwiki.jp/guide/pages/801.html#id_30dcdc73 また動画のURLはYoutubeのURLをご利用ください。 =>http //www.youtube.com/ たとえば、#video(http //youtube.com/watch?v=kTV1CcS53JQ)と入力すると以下のように表示されます。
https://w.atwiki.jp/pubgpro/pages/110.html
野良連合のストリーマー部門のMitchelとジャンヌが主催するリーグ大会。毎週水曜日開催。 開催日 予選 2018年1月17日 本戦 Season1:2018年1月24日〜2月14日 Season2:2018年2月28日〜3月??日 大会方式 ソロ、スクアッド混合、16試合ポイント制 大会配信 Youtube 大会結果 Season1 順位 チーム ポイント 1位 V3 Turtles 3610 2位 Crest Gaming Windfall 3015 3位 Sengoku Gaming Survive 2435 4位 Affict 2060 5位 W!NPS 2025 6位 PUBGRU RED CELL 1980 7位 バナナマン 1890 8位 ドドリア 1840 9位 GLRX Eagle Hawks 1755 10位 PUBGRU 1720 11位 JUPITER 1580 12位 CYCLOPS athlete gaming 1550 13位 violet 1525 14位 Affict DOS 1475 15位 XxDarkAngelxX 675 外部リンク 公式Twitter 予選概要 大会概要
https://w.atwiki.jp/xbox360score/pages/1022.html
Halo Waypoint 項目数:0 総ポイント:0 アワードのみのタイトル。他のHaloシリーズと関連付いている。 Halo Official Site http //www.halowaypoint.com/en-us/ http //www.halowaypoint.com/ja-jp/ 関連タイトル Halo Combat Evolved Anniversary Halo 3、Halo 3 ODST Halo 4 Halo Reach Halo Wars Spartan AssaultXBLA、Win8, WP8 アワード Halo Waypoint モニター Halo Waypoint のガイド役を果たす AI Recon Dare ヘルメット(男女) Halo3 ODSTの実績「Vidmaster チャレンジ エンデュア」をアンロックしよう ODST ヘルメット(男女) Halo3 ODSTの実績「キャンペーンクリア」をアンロックしよう ODST パーカー(男女) Halo3 ODSTの実績「ダーク タイム」をアンロックしよう ODST アーマー(男女) Halo3 ODSTの実績「グッド マインド」をアンロックしよう ODST シャツ(男女) Halo3 ODSTの実績「ツーリスト」をアンロックしよう Halo スパルタン EVA ヘルメット(男女) 船外活動用の EVA ヘルメットをアンロックするには、Waypoint キャリアマイルストーン 50 に到達する必要がある Halo Reach ベータ シャツ(男女) Halo Reach マルチプレイヤー ベータに参加する Halo 4 - RAIDER ヘルメット 「RAIDER」アーマーをすべてアンロックする Halo 4 - RAIDER DSTT ヘルメット 「RAIDER DSTT」アーマーをすべてアンロックする Halo Waypoint モニター Waypointを起動。 Halo スパルタン EVA ヘルメット 関連タイトルの実績合計値のうち、3900を獲得するとマイルストーン50になる。 Halo Reach ベータ シャツ 2010年5月4~19日に行なわれたReachβをプレイしたことがあると獲得出来る。 Halo 4 - RAIDER ヘルメット Halo4のスパルタンオプスEP1の最初の3エピソードをレジェンドでクリアした後、 Waypointの機密事項ページでコードを全て入力すると獲得。 Halo 4 - RAIDER DSTT ヘルメット肩:Halo4のスパルタンオプスEP1,2,3を全て難易度レジェンドでクリア ボディ:Halo4のキャンペーンを難易度レジェンドでクリア ヘルメット:Halo4のウォーゲーム(マッチメイキング)で1000戦を達成 した後、Waypointの機密事項ページでコードを全て入力すると獲得。 機密事項 http //mingcool2000.wix.com/section3-decryption アルファヘイローアーカイブ CEAで全てのターミナルを見つけ、コードを入力するとReachの10万cRが獲得できる http //www.youtube.com/watch?v=slvdxFl64Ls レクイエムアーカイブ RAIDERヘルメットと同じ。 セクション3アーカイブ 「賢者」はHalo4のターミナルを全てチェック後にアンロック可能。 Reachアーマー Military Police BASE マイルストーン 450 Halo GS Reach 伝説への第一歩 Military Police CBRN/HU/RS マイルストーン 900 Halo GS ODST ニードラーストーム Waypoint Military Police BASE Military Police HU/RS/CNM マイルストーン 1400 Halo GS 3 ニードラーキル Reach スーパーコンビネーション Waypoint Military Police CBRN/HU/RS CQB BASE マイルストーン 900 Halo GS Reach 待望のヒーロー CQB HU/RS/CNM ODST キャンペーンクリア:アドバンス Waypoint CQB BASE CQB UA/HUL マイルストーン 1900 Halo GS 3 キャンペーンクリア:レジェンド Reach 全能の神 Waypoint CQB HU/RS/CNM CHEST UA/BASE SECURITY [W] マイルストーン 1900 Halo GS Reach イエッサー
https://w.atwiki.jp/echoes140/pages/384.html
[Deemo] Easy Rank Name Score Result 1 ねおん 100.00% Result 1 わの 100.00% Result 3 がりょー 99.53% Result Normal Rank Name Score Result 1 ねおん 100.00% Result 2 わの 99.98% Result 3 がりょー 99.11% Result Hard Rank Name Score Result 1 ねおん 100.00% Result 2 わの 99.99% Result 3 がりょー 85.51% Result
https://w.atwiki.jp/azounoman/pages/47.html
2048 Monster Trap 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=2048 解答方針 まず,ある点が多角形の内部にあるかどうかを判定する方法を知っている必要がある.これは,判定したい点を中心に,多角形の頂点を回りながら見ていき,角度の変化を足し合わせ,360度なら内側,0度なら外側と判定する.ただし,多角形が自分自身と重なりをもつような場合はこの判定法は使えないので注意(そのような図形を多角形と呼ぶかは疑問だが). この問題では原点を囲むループあるかどうかを判定することになるのだが,そのループをどう見つけるかが問題. ここでは線分を一本ずつ追加していき,そのたびに新しくできるループについて原点を含むかどうかを判定していくというアルゴリズムで臨んだ.すべてのループに対してチェックを行うとなると大変だが,ループの包含関係に注意すれば,チェックしなければならないループの数はそれほど多くなく,それらを列挙するのも単純な方法で実行できるので,この方法が使える. ループを見つける方法について説明する.線分を追加していく過程で線分の属する連結成分を管理しておく.また,線分iと線分jの交点がある場合は交点,ない場合はnullを(i,j)要素とするようなテーブルを管理しておく.ループができるのは,線分 i を追加したとき,その線分と交わる線分で,線分追加前に同じ連結成分に属していた線分が2本以上あった場合である.その線分を j 及び k とすると,線分の接続関係のグラフにおいて j から k へのBFSを行えばループを構成できる(ここで,BFSを用いた場合,構成されるループは初等的であることに注意).このループが原点を含むかどうかを判定すればよい(線分 i を追加したときにできるループで線分 j および k を含むループは複数あるが,そのうち初等的なものを一つだけ調べればよい).なお,これを同じ連結成分に属するすべての j, k について行う必要はない.具体的には,同じ連結成分に属する連結成分が端から順に j1, j2, ...jm とあったとき,(j1,j2), (j2,j3), ...,(jm-1,jm) についてだけ調べている(実際は(j1,jm)についてだけ調べればよいので,このプログラムはもっと効率よくできるはず). 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); if(n==0) break; LineSegment[] ls = new LineSegment[n]; for(int i=0;i n;i++){ Point p1 = new Point(sc.nextDouble(),sc.nextDouble()); Point p2 = new Point(sc.nextDouble(),sc.nextDouble()); ls[i] = new LineSegment(p1,p2,i); } Solver sol = new Solver(n,ls); if(sol.solve()) System.out.println("yes"); else System.out.println("no"); } } } class Solver{ int n; LineSegment[] line; Point[][] crosspoint; Solver(int n,LineSegment[] line) { this.n = n; this.line = line; this.crosspoint = new Point[n][n]; for(int i=0;i n;i++) for(int j=0;j n;j++) crosspoint[i][j] = null; } public boolean solve(){ for(int i=0;i n;i++){ // add ls[i] // calc cross point with ls[0]..ls[i-1] TreeMap Point,Integer loccrosspoint = new TreeMap Point,Integer (); for(int j=0;j i;j++){ Point p = line[i].crossPoint(line[j]); if(p!=null){ crosspoint[i][j] = p; crosspoint[j][i] = p; loccrosspoint.put(p,j); } } // find loop and check Integer[] cline = new Integer[loccrosspoint.size()]; cline = loccrosspoint.values().toArray(cline); int m = cline.length; for(int j=0;j m;j++){ for(int k=j+1;k m;k++){ if(line[cline[j]].group==line[cline[k]].group){ if(solve_sub(cline[j],cline[k],i)) return true; continue; } } } // merge group TreeSet Integer merged = new TreeSet Integer (); for(int j=0;j m;j++){ merged.add(line[cline[j]].group); } for(int g merged){ for(int j=0;j i;j++){ if(line[j].group==g){ line[j].group = i; } } } } return false; } // find loop subroutin public boolean solve_sub(int j,int k,int m){ // BFS int[] prev = new int[m]; boolean[] searched = new boolean[m]; for(int u=0;u m;u++) prev[u] = -1; for(int u=0;u m;u++) searched[u] = false; Queue Integer q = new LinkedList Integer (); prev[j] = m; searched[j] = true; q.offer(j); boolean searchend = false; while(!searchend){ int u = q.poll(); for(int v=0;v m;v++){ if(crosspoint[u][v]!=null !searched[v]){ searched[v] = true; prev[v] = u; if(v==k){ searchend = true; break; } else{ q.offer(v); } } } } // calc path ArrayList Point path = new ArrayList Point (); path.add(crosspoint[m][k]); int v = k; while(v!=m){ path.add(crosspoint[v][prev[v]]); v = prev[v]; } // return return Point.inPolygon(path); } } class Point implements Comparable Point { double x; double y; static final double EPSILON = 1E-8; Point(double x,double y){ this.x = x; this.y = y; } public int compareTo(Point p){ if(this.x p.x) return 1; else if(this.x p.x) return -1; else{ if(this.y p.y) return 1; else if(this.y p.y) return -1; else return 0; } } public boolean equals(Object o){ Point p = (Point)o; return this.x==p.x this.y==p.y; } /* public static boolean isCrossed(Point p1,Point p2,Point q1,Point q2){ return ((p1.x - p2.x) * (q1.y - p1.y) + (p1.y - p2.y) * (p1.x - q1.x)) * ((p1.x - p2.x) * (q2.y - p1.y) + (p1.y - p2.y) * (p1.x - q2.x)) 0 ((q1.x - q2.x) * (p1.y - q1.y) + (q1.y - q2.y) * (q1.x - p1.x)) * ((q1.x - q2.x) * (p2.y - q1.y) + (q1.y - q2.y) * (q1.x - p2.x)) 0; } */ public static boolean isCrossed(Point p1,Point p2,Point q1,Point q2){ double c1 = ((p1.x - p2.x) * (q1.y - p1.y) + (p1.y - p2.y) * (p1.x - q1.x)) * ((p1.x - p2.x) * (q2.y - p1.y) + (p1.y - p2.y) * (p1.x - q2.x)); double c2 = ((q1.x - q2.x) * (p1.y - q1.y) + (q1.y - q2.y) * (q1.x - p1.x)) * ((q1.x - q2.x) * (p2.y - q1.y) + (q1.y - q2.y) * (q1.x - p2.x)); // c1 0 or c2 0 if(c1 EPSILON||c2 EPSILON) return false; // c1 0 and c2 0 else if(c1 -EPSILON||c2 -EPSILON) return true; // c1=0 and c2=0 else if(Math.abs(c1) EPSILON Math.abs(c2) EPSILON){ if(p1.equals(q1)||p1.equals(q2)||p2.equals(q1)||p2.equals(q2)) return true; return false; } // "c1=0 and c2 0" or "c1 0 and c2=0" else return true; } public static boolean inPolygon(ArrayList Point poly){ double acc = 0.0; int n = poly.size(); for(int i=0;i n-1;i++){ acc += arg(poly.get(i),poly.get(i+1)); } acc += arg(poly.get(n-1),poly.get(0)); if(Math.abs(acc) EPSILON) return false; else return true; } /* * 0 = theta Pi private static double arg(Point p1,Point p2,Point p3){ double ax = p1.x - p2.x; double ay = p1.y - p2.y; double bx = p3.x - p2.x; double by = p3.y - p2.y; double theta = Math.atan2((ax*by-ay*bx)/(ax*ax+ay*ay),(ax*bx+ay*by)/(ax*ax+ay*ay)); return Math.abs(theta); } */ // -Pi theta Pi private static double arg(Point p1,Point p2){ double ax = p1.x; double ay = p1.y; double bx = p2.x; double by = p2.y; double theta = Math.atan2((ax*by-ay*bx)/(ax*ax+ay*ay),(ax*bx+ay*by)/(ax*ax+ay*ay)); return theta; } } class LineSegment{ Point p1; Point p2; double a; double b; double c; int group; static final double EPSILON = 1E-8; LineSegment(Point p1,Point p2,int group){ this.p1 = p1; this.p2 = p2; this.a = p1.y-p2.y; this.b = -p1.x+p2.x; this.c = -p1.x*(p1.y-p2.y)+p1.y*(p1.x-p2.x); this.group = group; } public boolean hasCrossPoint(LineSegment l){ return Point.isCrossed(this.p1,this.p2,l.p1,l.p2); } public Point crossPoint(LineSegment l){ if(!hasCrossPoint(l)) return null; double det = this.a*l.b-this.b*l.a; if(Math.abs(det) EPSILON){ if (this.p1.equals(l.p1)||this.p1.equals(l.p2)) return this.p1; else if(this.p2.equals(l.p1)||this.p2.equals(l.p2)) return this.p2; } double x = (-l.b*this.c+this.b*l.c)/det; double y = (l.a*this.c-this.a*l.c)/det; return new Point(x,y); } }
https://w.atwiki.jp/nicoratch/pages/246.html
概要 CDレコーダー機能搭載のDJ用CDプレーヤー。マイク/インストルメンタル入力付。録音して即DJプレイも可能。 CDR-07 2006年1月発売。 +スペック表・CDR-07 <CDR-07の主な特長> ●マイク、楽器、ターンテーブルなど、多彩な機材を接続できる充実した入力端子 ●ノンストップリミックスPLAYやライブに対応するマルチ・トラックナンバリング・システムを採用 ●レコーダーセクションは音楽専用プロCDレコーダー仕様 ●アナログレコードとのミックスを考慮したサウンド ●最大8秒まで録音できるサンプラー機能を搭載 ●4ヶ所のCUEポイントをそれぞれ個別に設定可能 ●MP3再生機能を搭載 ●オートBPMカウンターを搭載 ●デジタルエフェクター(フランジャー/ディレイ/フィルター)内蔵 ●別売のTASCAM/TT-M1を使用することで、ターンテーブルを使用したスクラッチプレイが可能 ■使用ディスク:標準CD、CD-R、CD-RW ■入力端子:LINE/PHONO STEREO×1 RCA、MIC/INST×1、1/4inch HEADPHONE JACK、DIGITAL IN×1 RCA ■出力端子:LINE OUT STEREO×1 RCA、MONITOR STEREO×1 RCA、DIGITAL OUT×1 RCA、DIGITAL THROUGH×1、RCAPHONES×1、STEREO 1/4inch HEADPHONE JACK ■フットスイッチ:TRACK×1 1/4inch PHONE JACK、REC/PAUSE×1、1/4inch PHONE JACK ■フェーダースタート:φ3.5 PHONE JACK ■TT-LINK対応。 ■最大外形寸法:244mm(W)x110mm(H)x335mm(D) ■本体質量:3.3kg 価格 オープン・プライス(市場予想価格/80,000円前後) CDR-07 cdr07_450.jpg CDR-07 Pro 同軸デジタル入出力(IEC60958タイプII)とデジタルスルー出力機能搭載。 +スペック表・CDR-07 Pro Features feature Speedy operation with the new start switch and cue buttons. feature Scratch and sample your own recorded vocal sounds! feature Practice guitar tunes with the Master Tempo feature feature Record your bands rehearsal and create simple Demos feature Make CD s out of your favorite vinyls and analog cassette tapes feature Digitalize DTM analog sound sources instantly feature Number tracks while recording with the Foot switch track numbering system. feature Accurate scratching and smooth mixing with the new touch sensor JOG wheel and control software. feature Record phrases while you DJ and add color to your performance by scratching and looping it. feature Vestax has applied 3 different track-numbering modes for the CDR-07. The first mode is the usual silent point-detecting mode. The second is the FOOTSWITCH mode, which sets the track numbers by stepping on the foot switch. The third mode, TIME STAMP MODE sets the track number at every time point (ex. Every 3mins) feature CDR-07Pro has COAXIAL digital input/output (IEC60958 TYPE II) and DIGITAL THROUGH OUT. feature MP3 readable with the 320kbps MP3 encoder and folder manageable. feature Maximum 8sec sampler, LOOP play, 3 digital effects, BPM counter, Max+/-100% pitch control, 1 octave key changer, reverse play, scratch mode, 4 point cue memory, disc memory 価格 ¥149,800 (当時)
https://w.atwiki.jp/carstereo/pages/78.html
Angel...Angel...Angel... Buried in time and distant memories, That s right, we were angels From high in the sky, we scattered the seeds of love We wanted to rid the world of sadness Say, look at that blue sky As you stare into it, doesn t your courage swell up inside? Even now? To my friends, we may have lost the wings from our backs, but still, There s some mysterious power that remains with us To my friends, let s embrace the light and dare to dream Look! I can see the rainbow in your eyes Angel...Angel...Angel
https://w.atwiki.jp/yosybe/pages/13.html
Microsoft SharePointとは、マイクロソフトが提供する、ウェブブラウザをベースとしたコラボレーションやドキュメント管理を行うプラットフォームの総称である。共有されたワークスペースやドキュメントに対してウェブブラウザからアクセスできるほか、Wikiやブログなどのようなアプリケーションもホストすることができる。ただし、5ギガバイトを超えるサイズのファイルは取り扱えないなど、ファイルサーバを置き換えるためのものではないとされている。SharePointの機能の多くは、Webパーツと呼ばれるものによって構成されている。たとえばタスクリストや電子会議室などをWebパーツとして作成することができる。SharePointはIISをベースとし、Microsoft SQL ServerをデータベースとするASP.NET2.0Webアプリケーションである。 Microsoft SharePointは2種類のプロダクトから構成されている。 Windows SharePoint Services(WSS) Microsoft Office SharePoint Server(MOSS) 以前はSharePoint Portal Serverという名称だった。 SharePointファミリーには、Microsoft FrontPage|Microsoft Office SharePoint Designerも含まれる。 SharePointファミリー Windows SharePoint Services (WSS) Windows SharePoint Services(WSS)は、Windows Serverに無償で追加できるアドオンである。WSSはHTTPとHTTPSをベースとして、ドキュメントの編集やバージョンの管理、またWikiやブログといったコラボレーションのための基盤を提供する。また、エンドユーザー向けの機能として、ワークフローやToDoリスト、アラート、電子会議室などの機能を持ったWebパーツと呼ばれるコンポーネントがあり、SharePointのページに組み込んで使用される。WSS 3.0はASP.NET 2.0を基盤として実装されている。WSSは以前は「SharePoint Team Services」と呼ばれていた。 SharePointが標準で持っているワークフローは、3段階のワークフローしかない。ほかの機能を持ったワークフローが必要な場合は、SharePoint DesignerやVisual Studioを使って開発することになる。WSS3.0におけるワークフローの主な制限は、ASP.NETで作成したページの代わりにInfoPath 2007を使用してフォームを作成できないということである。 Microsoft Office SharePoint Server 2007 (MOSS 2007) Microsoft Office SharePoint Server (MOSS) は、有償のMicrosoft Officeサーバースイートである。MOSSはWSSの上で構築され、さらに多くの機能が追加されている。たとえばより詳細なドキュメント管理やエンタープライズサーチの機能、ナビゲーション、RSSのサポート、Microsoft Content Management Serverの後継として引き継いだ機能などである。MOSSのEnterprise Editionでは、Excelサービスやビジネスデータカタログなど、ビジネスインテリジェンスの機能も含まれている。また、Microsoft Project Serverと連携してプロジェクトマネジメントを可能にしたり、PowerPointのスライドライブラリの機能が追加されるなど、特定のアプリケーションコンポーネントをインストールすることによってMicrosoft Officeの各製品と統合された環境が提供される。 Microsoft Search Server Microsoft Search Server (MSS)は、マイクロソフトが提供するエンタープライズサーチプラットフォームである。その検索機能はMicrosoft Office SharePoint Serverを基にしている。MSSはそのクエリエンジンとインデックスを作成する基盤としてWindows サーチと同じものを使用している。MOSSの検索はドキュメントに埋め込まれたメタデータの検索機能を提供する。 Microsoft Search Serverは2008年3月に「Search Server 2008」として公開された。同時に無償で使用できる「Search Server Express 2008」も公開されている。Expressエディションの機能は有償版と比べてもインデックスの作成数などに制限は設けられていないが、スタンドアロンの利用に制限されていて、クラスタにスケールアウトすることができない。 Microsoft SharePoint Designer Microsoft FrontPage|Microsoft Office SharePoint Designerは主にSharePointサイトやWSS上で動くエンドユーザ向けワークフローを作成するWYSIWYGWebオーサリングツール|HTML エディタである。レンダリングエンジンはMicrosoft Expression Webなどのデザインツールや、Visual Studio 2008統合開発環境|IDEと共通である。SharePoint DesignerはMicrosoft FrontPageの後継製品とされている。しかし、FrontPageにはSharePoint 2007やMOSSとの互換性はない。SharePoint Designerをサーバーにインストールする際はIISにFrontpageサーバー拡張が必要である。